package com.mrjy.wechat.conts;

import com.mrjy.wechat.bo.WeChatOAuthBo;
import com.mrjy.wechat.process.AccessToken;
import com.mrjy.wechat.process.JSTicket;
import com.mrjy.wechat.util.ServletContextUtil;
import com.mrjy.wechat.util.WxConfig;

import java.io.Serializable;
/**
 * 微信常量
 * @author csshui
 * date ：2017-04-24
 */
public class WxConsts implements Serializable {
	
	/**
	 *
	 */
	private static final long serialVersionUID = 1182946979745036767L;
	/**
	 * 域名
	 */
	public static final String PUBLIC_DOMAIN = WxConfig.getProperty("PUBLIC_DOMAIN");
	/**
	 * 微信 appId
	 */
	public static final String APPID = WxConfig.getProperty("APPID");

    /**
     * 微信 PC_APPID
     */
    public static final String PC_APPID = WxConfig.getProperty("PC_APPID");

	/**
	 * 微信 appsecret
	 */
	public static final String APPSECRET = WxConfig.getProperty("APPSECRET");
    /**
     * 微信 appsecret
     */
    public static final String PC_APPSECRET = WxConfig.getProperty("PC_APPSECRET");

    /**
     * pc login code
     */
    public static final String PC_LOGIN_CODE = WxConfig.getProperty("PC_LOGIN_CODE");
	/**
	 * #token，用于绑定微信接口用的
	 */
	public static final String SIGN_TOKEN = WxConfig.getProperty("SIGN_TOKEN");

	/**
	 * http get请求
	 */
	public static final String HTTP_GET = "GET";
	/**
	 * http post请求
	 */
	public static final String HTTP_POST = "POST";
	/**
	 * 错误编码
	 */
	public static final String ERROR_CODE = "errcode";
	/**
	 * 错误信息
	 */
	public static final String ERROR_MSG = "errmsg";
	/**
	 * 普通的access_token
	 */
	public static final String ACCESS_TOKEN = "accessToken";
	/**
	 * js_sdk 票据 js_ticket
	 */
	public static final String JS_TICKET = "jsTicket";
	/**
	 * 网页授权OAuth2.0获取code
	 */
	public static final String GET_OAUTH_CODE_URL = WxConfig.getProperty("GET_OAUTH_CODE_URL");
	/**
	 * 网页授权OAuth2.0获取token
	 */
	public static final String GET_OAUTH_TOKEN_URL = WxConfig.getProperty("GET_OAUTH_TOKEN_URL");
	/**
	 * 网页授权OAuth2.0获取用户信息
	 */
	public static final String GET_OAUTH_USERINFO_URL = WxConfig.getProperty("GET_OAUTH_USERINFO_URL");
	/**
	 * 网页授权OAuth2.0检查access_token的有效性
	 */
	public static final String GET_OAUTH_CHECK_TOKEN_URL = WxConfig.getProperty("GET_OAUTH_CHECK_TOKEN_URL");
	/**
	 * 获取access_token 接口
	 */
	public static final String GET_ACCESS_TOKEN = WxConfig.getProperty("GET_ACCESS_TOKEN");
	/**
	 *  获取js_ticket 接口
	 */
	public static final String GET_JSAPI_TICKET = WxConfig.getProperty("GET_JSAPI_TICKET");

	/**
	 *  下载微信文件接口
	 */
	public static final String GET_WX_FILE_URL = WxConfig.getProperty("GET_WX_FILE_URL");
	/**
	 * 文件存放的根目录
	 */
	public static final String File_ROOT_PATH = WxConfig.getProperty("File_ROOT_PATH");
	/**
	 * 头像保存路径
	 */
	public static final String ICO_SAVE_PATH = WxConfig.getProperty("ICO_SAVE_PATH");
    /**
     * 头像保存路径
     */
    public static final String FAMILYPIC_SAVE_PATH = WxConfig.getProperty("FAMILYPIC_SAVE_PATH");

	/**
	 * 会员套餐_365/1年
	 */
	public static final String MEMBERSHIP_PACKAGE_365 = WxConfig.getProperty("MEMBERSHIP_PACKAGE_365");
	/**
	 * 会员套餐_520/2年
	 */
	public static final String MEMBERSHIP_PACKAGE_520 = WxConfig.getProperty("MEMBERSHIP_PACKAGE_520");
	/**
	 * 峰会折扣价36.5元/1年
	 */
	public static final String MEMBERSHIP_PACKAGE_DISCOUNT = WxConfig.getProperty("MEMBERSHIP_PACKAGE_DISCOUNT");
    /**
     * 企业付款到用户
     */
    public static final String TRANSFERS_PAY_URL = WxConfig.getProperty("GET_TRANSFERS_URL");
    /**
     * 退款给用户
     */
    public static final String REFUND_PAY_URL = WxConfig.getProperty("GET_REFUND_URL");
    /**
	 * 根据openId获取关注用户信息
	 */
	public static final String GET_USER_INFO = WxConfig.getProperty("GET_USER_INFO");
	/**
	 * 推广明细结算时间 天 
	 */
	public static final String PROMOTERDETAIL_DAY = WxConfig.getProperty("PROMOTERDETAIL_DAY");
	/**
	 * 推广明细结算时间  年
	 */
	public static final String PROMOTERDETAIL_YEAR = WxConfig.getProperty("PROMOTERDETAIL_YEAR");

	/**
	 * 微信消息模板
	 * 设置所属行业  http请求方式: POST
	 */
	public static final String API_SET_INDUSTRY = WxConfig.getProperty("API_SET_INDUSTRY");
	/**
	 * 微信消息模板
	 * 获取设置的行业信息 http请求方式：GET
	 */
	public static final String GET_INDUSTRY = WxConfig.getProperty("GET_INDUSTRY");
	/**
	 * 微信消息模板
	 * 获得模板ID http请求方式: POST
	 */
	public static final String API_ADD_TEMPLATE = WxConfig.getProperty("API_ADD_TEMPLATE");
	/**
	 * 微信消息模板
	 * 获取模板列表 http请求方式：GET
	 */
	public static final String GET_ALL_PRIVATE_TEMPLATE = WxConfig.getProperty("GET_ALL_PRIVATE_TEMPLATE");
	/**
	 * 微信消息模板
	 * 删除模板 http请求方式：POST
	 */
	public static final String DEL_PRIVATE_TEMPLATE = WxConfig.getProperty("DEL_PRIVATE_TEMPLATE");
	/**
	 * 
	 * 发送模板消息   http请求方式: POST
	 */
	public static final String POST_SEND_TEMPLATE = WxConfig.getProperty("POST_SEND_TEMPLATE");
	/**
	 * 获取扫码支付二维码url
	 * ?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
	 */
	public static final String GET_SCANPAY_URL = WxConfig.getProperty("GET_SCANPAY_URL");

    /**
     * 网页绑定OAuth2.0获取code
     */
    public static final String GET_BINDING_CODE_URL = WxConfig.getProperty("GET_BINDING_CODE_URL");

    /**
     * PC微信登录域名
     */
    public static final String PC_PUBLIC_DOMAIN = WxConfig.getProperty("PC_PUBLIC_DOMAIN");
    /**
     * 微信小程序aapid
     */
    public static final String MINI_APPID = WxConfig.getProperty("MINIAPPID");
    /**
     * 微信小程序appsecret
     */
    public static final String MINI_APPSECRET = WxConfig.getProperty("MINIAPPSECRET");
    		
    /**
     * 小程序根据code获取用户openid，unionId和session_key 接口
     */
    public static final String JSCODE2SESSION = WxConfig.getProperty("JSCODE2SESSION");
    /**
     * 会员免费标志
     */
    public static final String IS_VIP_STATUS = WxConfig.getProperty("IS_VIP_STATUS");
    
    

	/**
	 * 获取请求微信的url
	 * @param URL 请求的路径，从配置文件取得常量
	 * @param params 请求的可变参数
	 * @return
	 */
	public static String getWeChatApiURL(String URL,Object ...params){
		return String.format(URL, params);
	}

	/**
	 * 获取全局缓存的accessToken,此缓存是在定时器调用时获取并缓存的
	 */
	public static AccessToken getAccessToken(){
		AccessToken accessToken = (AccessToken) ServletContextUtil.get().getAttribute(WxConsts.ACCESS_TOKEN);
		if(null == accessToken){
			accessToken = new WeChatOAuthBo().getAccessToken(WxConsts.APPID, WxConsts.APPSECRET);
		}
		return accessToken;
	}
	/**
	 * 获取全局缓存的js_ticket ， 次缓存是在定时器调用获取并缓存的
	 */
	public static JSTicket getJSTicket(){
		JSTicket jsTicket = (JSTicket) ServletContextUtil.get().getAttribute(WxConsts.JS_TICKET);
		if(null == jsTicket){
			WeChatOAuthBo weChatOAuthBo = null ;
			AccessToken accessToken = (AccessToken) ServletContextUtil.get().getAttribute(WxConsts.ACCESS_TOKEN);
			if(null == accessToken){
				weChatOAuthBo = new WeChatOAuthBo();
				accessToken = new WeChatOAuthBo().getAccessToken(WxConsts.APPID, WxConsts.APPSECRET);
				jsTicket = weChatOAuthBo.getJsapiTicket(accessToken);
			}else{
				weChatOAuthBo = new WeChatOAuthBo();
				jsTicket = weChatOAuthBo.getJsapiTicket(accessToken);
			}
			
		}
		return jsTicket;
	}

    /**
     * 录音保存路径
     */
    public static final String RECORD_SAVE_PATH = WxConfig.getProperty("RECORD_SAVE_PATH");


}
